This page last changed on Nov 25, 2008 by scytacki.

Intro by Scott

OTrunk is an instance of a type of framework I've been try to create for sometime now. I believe this type of framework can be widely useful. And it seems that other people are creating parts of this framework, but I haven't yet seen a fully integrated one like OTrunk is trying to become.

The goals below are the goals that OTrunk is trying to achieve, they can be seen as a set of characteristics of this type of framework. Hopefully, these characteristics can be broken in to smaller self contained pieces. There are already frameworks that can be used for some of this functionality.

Goals

Object Level

  • Create new object types or classes
    • there is little reduntant information in the type definition
    • it can be done without programming
    • the types can be created in multiple ways
    • a collection of object types are analagous to a database table schema or a xml schema
  • Load and Save objects using xml
    • this way the objects can configured by programs and the xml can be maually edited.
    • also the xml can be edited using xml editors.
    • the xml can be edited by loading the objects using their views to modify them and then save them again.
  • Use these objects in programming languages
    • Java is the primary language
    • Scripting languagues are next: Ruby, Javascript, PHP and Python are at the top of the list
  • Import or convert the object types and object instances into standard systems
    • xml schema
    • relational databases
    • XPCOM components
    • object databases
  • Represent modifications to objects as differences
    • a form is a set of objects, when the form is filled the original form objects are used as "prototypes" of new objects. Those new objects are the ones actually modified when the form is filled it.
    • support multiple modified objects at the same time. For example a report of multiple filled out forms needs to have all the modified objects available.
  • Support mapping object types to existing classes in thirdparty libraries
    • For example you find a cool widget that you want to embed in your document, it should be easy to make a new object type that can be used to configure that widget, and by updated when the widge updates.
    • the existing classes can be seen as a kind of view of the object type
  • Support services for objects defined by other objects
    • this allows multiple objects to share resources and configuration
      without modification to the underlying framework
    • this might be movable to the view layer

View Level

  • Create multiple views for the object types
    • different views can be used at the same time: author, runtime, and report views
  • Create views using different renderers
    • report views using Java Swing objects
    • support for views using XHTML/CSS
  • Nest views inside of views
    • For example a document view can have an embedded graph view inside of it
  • Create views out of existing objects and views
    • this a allows making a new view out of existing views.
    • it is useful for new object types that can be rendered using existing views.

The OTrunk Comparison might be helpful if you are reading this page.

Document generated by Confluence on Jan 27, 2014 16:52